package com.sky.rocket.producer.web;

import org.apache.rocketmq.client.producer.SendResult;
import org.apache.rocketmq.client.producer.SendStatus;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
@RequestMapping("rocketProducer")
public class RocketProducerController {

    @Autowired
    private RocketMQTemplate rocketMQTemplate;

    @GetMapping("send")
    public void sentRocketMQ(){
        // 第一个参数为topic:tag  冒号前面是topicName 冒号后面是tagName
        // 如果业务逻辑中 topic 固定为一个，而业务处理需要分开，这个时候就可以使用这种方式，用topicName:tagName
        // 如果业务逻辑中 每一条消息对应一个topic 这个时候就没有必要使用以下方式，直接使用topicName就可以
        SendResult sendResult = rocketMQTemplate.syncSend("rocketKey:sky", "使用RocketMessageListener");
        rocketMQTemplate.syncSend("rocketKey:name", "使用RocketMessageListener");
        rocketMQTemplate.syncSend("skyTopic:name", "使用RocketMessageListener");
        rocketMQTemplate.syncSend("runnerKey", "使用RocketMQRunner@ApplicationRunner监听");
        if (sendResult.getSendStatus().equals(SendStatus.SEND_OK)) {
            System.out.println("发送成功");
            System.out.println(sendResult.isTraceOn());
        }
    }
}
